Data acquisition devices have become an important tool in tracking many different types of items. Perhaps the best-known and longest-used type of data acquisition device is the bar-code scanner, which is often used in commercial applications such as grocery stores to identify groceries, in document applications to track documents, and so forth. Bar code scanners typically read and decode a linear bar code, which can either be printed directly on an item of interest or can be printed on a label and then attached to the item. The most familiar type of linear bar code usually consists of a series of black bars of differing widths, spaced apart from each other by white space.
Less well known than linear bar code, but equally if not more important, are two-dimensional codes, also known as “matrix” codes. The two-dimensional code has several advantages over linear code, most important of which are the ability to encode much more information than a linear code, vastly improved data integrity, and occupy far less space. A disadvantage of two-dimensional codes is that they are more difficult to read and decode. Two-dimensional codes are usually read by machine vision systems, which essentially capture a digital image of the two-dimensional code, and then proceed to analyze that image to extract the information contained in the code. One chronic difficulty that has emerged in the reading of two-dimensional codes is that of ensuring that the machine vision scanner acquires an image of the code from which it can extract information. One of the difficulties in acquiring a suitable image is ensuring that the code itself is positioned within the field of view of the scanner, and that the image is in focus.
One approach to providing position and focus feedback to the user of scanner is described in U.S. Pat. No. 5,756,981 to Roustaei et al. Roustaei describes a scanner system including a targeting feature that uses several beams of light to indicate the positions of some of the boundaries of the system's field of view. Roustaei's system suffers from various disadvantages. Among other things, the system is limited to indicating only the positions of two of the boundaries of the field of view, or, alternatively, the positions of the four corners of the field of view. Roustaei provides no indication of where the center of the field of view lies. Since the center of the field of view is the optimal position for a target whose image is to be captured, Roustaei provides sub-optimal results because it forces the user to either guess or visually interpolate the center of the field of view. Moreover, Roustaei targeting feature only tells a user when the target is in the field of view, but does not provide any information to assist the user in positioning the target at the proper focus distance. Finally, Roustaei's targeting feature employs very complex optical components, such as lasers, fiber optics, beam splitters, and complex configurations of mirrors and lenses. The nature and complexity of the components involved leads to high costs and, inevitably, to poor system reliability.
Another related and chronic problem associated with machine vision scanning of two-dimensional codes is providing feedback to the user when the code has been successfully read. Current systems either provide an audible tone when a code is read, or contain one or more light-emitting diodes (LEDs) on the chassis of the scanner that light up when a code is successfully read. Both these approaches have disadvantages. If the audible tone is too loud, it quickly grows annoying to human operators, which could lead them to switch off the tone or ignore it altogether. If the tone's volume is reduced to make it less annoying to the operator, the operator may not be able to hear the tone in an environment with high levels of background noise. With the LED's on the chassis of the scanner, the user must continually look away from the code he or she is trying to scan to look at the LEDs to see if they light up. This is a distraction for the user, and takes their attention away from keeping the code within the field of view of the scanner.